#ifndef METRONOMO_H
#define METRONOMO_H

#include <QSound>
#include "notacompas.h"
#include "contadortiempo.h"

class Metronomo 
{
public:
    Metronomo();
    ~Metronomo();

    void arrancar();
    void parar();

	void setTempo(int tempo);
	int getTempo() { return tempo; }

	void setPulsosPorCompas(int pulsosPorCompas) { this->pulsosPorCompas = pulsosPorCompas; }

    int getNumeroCompasActual();
	double getProporcionCompletadoCompas();

	quint64 getMilisegundosDesdeInicio();

	double getMilisegundosPorCompas() { return milisegundosPorCompas; }
	double getMilisegundosPorPulso() { return milisegundosPorPulso; }

	quint64 getMilisegundoInicioCompas();

	void setReproducirSonido(bool reproducir) {
		this->reproducirSonido = reproducir;
	}

	bool getReproducirSonido() {
		return reproducirSonido;
	}

	void comprobarSonido();

	void actualizar();

    double getMilisegundoNota(const NotaCompas& nota, int numeroCompas);
    double distanciaNota(const NotaCompas& nota, int numeroCompas);

private:
    int tempo;
    int pulsosPorCompas;    
	bool activo;
	bool reproducirSonido;

	ContadorTiempo contadorTiempo;

    quint64 milisegundosAcumulados;
    int compasesAcumulados;

	double milisegundosPorCompas;
	double milisegundosPorPulso;
	
	int ultimoPulsoEjecutado;

	QSound* sonido1;
	QSound* sonido2;

};

#endif // METRONOMO_H
